例如,在以下代码中:
char name[20] = "James Johnson";
我想将从空格开始的所有字符分配到char数组的末尾,所以基本上字符串如下所示:(不初始化它只是显示想法)
string s = "Johnson";
因此,基本上,字符串只接受姓氏。我怎么能这样做?
答案 0 :(得分:0)
总有不止一种方法可以做到 - 这完全取决于你所要求的内容。
你可以:
答案 1 :(得分:0)
std::string
有一整套字符串操作功能,我建议你使用它们。
您可以使用std::string::find_first_of
找到第一个空格字符,并从那里拆分字符串:
char name[20] = "James Johnson";
// Convert whole name to string
std::string wholeName(name);
// Create a new string from the whole name starting from one character past the first whitespace
std::string lastName(wholeName, wholeName.find_first_of(' ') + 1);
std::cout << lastName << std::endl;
如果您担心多个名称,也可以使用std::string::find_last_of
如果您担心名称未被空格分隔,您可以使用std::string::find_first_not_of
并搜索字母表中的字母。链接中给出的示例是:
std::string str ("look for non-alphabetic characters...");
std::size_t found = str.find_first_not_of("abcdefghijklmnopqrstuvwxyz ");
if (found!=std::string::npos)
{
std::cout << "The first non-alphabetic character is " << str[found];
std::cout << " at position " << found << '\n';
}
答案 2 :(得分:0)
我想你想要这样......
string s="";
for(int i=strlen(name)-1;i>=0;i--)
{
if(name[i]==' ')break;
else s+=name[i];
}
reverse(s.begin(),s.end());
需要
include<algorithm>