如何在C++中获取字符串的一部分?

12

如何在C++中获取字符串的一部分?我想知道从0到i的元素有哪些。


1
请参考以下链接:http://www.sgi.com/tech/stl/basic_string.html - Michael Aaron Safyan
5个回答

19

你想要使用std::string::substr。这是一个示例,不怕丑地从http://www.cplusplus.com/reference/string/string/substr/复制而来。

// string::substr
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str="We think in generalities, but we live in details.";
                             // quoting Alfred N. Whitehead
  string str2, str3;
  size_t pos;

  str2 = str.substr (12,12); // "generalities"

  pos = str.find("live");    // position of "live" in str
  str3 = str.substr (pos);   // get from "live" to the end

  cout << str2 << ' ' << str3 << endl;

  return 0;
}

2
您使用了 substr,文档在 这里
#include <iostream>
#include <string>
using namespace std;
int main(void) {
    string a;
    cout << "Enter string (5 characters or more): ";
    cin >> a;
    if (a.size() < 5)
        cout << "Too short" << endl;
    else
        cout << "First 5 chars are [" << a.substr(0,5) << "]" << endl;
    return 0;
}

你也可以使用 c_str 将其视为 C 风格的字符串(非修改),具体文档见 这里

2

如果字符串被声明为字符数组,您可以使用以下方法:

char str[20];
int i;
strcpy(str, "Your String");

// Now let's get the sub-string
cin >> i;

// Do some out-of-bounds validation here if you want..
str[i + 1] = 0;
cout << str;

如果你的意思是std::string,那么可以像Will建议的那样使用substr函数。

1
使用:
std::string sub_of_s(s.begin(), s.begin()+i);

这将创建一个字符串sub_of_s,该字符串是s中第i-th个元素。


1
假设您正在使用C++的std::string类,您可以这样做:
std::string::size_type start = 0;
std::string::size_type length = 1; //don't use int. Use size type for portability!
std::string myStr = "hello";
std::string sub = myStr.substr(start,length);
std::cout << sub; //should print h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接