例如,在下面的代碼:如何分配一個從數組中間開始的char數組?
char name[20] = "James Johnson";
我要分配的所有字符的空白的字符數組的末尾之後開始,所以基本上串是這樣的:(未初始化它但只是表明想法)
string s = "Johnson";
因此,本質上,字符串將只接受姓氏。我怎樣才能做到這一點?
例如,在下面的代碼:如何分配一個從數組中間開始的char數組?
char name[20] = "James Johnson";
我要分配的所有字符的空白的字符數組的末尾之後開始,所以基本上串是這樣的:(未初始化它但只是表明想法)
string s = "Johnson";
因此,本質上,字符串將只接受姓氏。我怎樣才能做到這一點?
我想你想這樣的..
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>
總有不止一種方法可以做到 - 它完全取決於您要求的內容。
你既可以:
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';
}
C或C++?請選擇一種語言。 – ameyCU
假設C:檢出[strtok](http://linux.die.net/man/3/strtok_r)。但是不管它是哪種語言 - 你會想要添加一大堆驗證代碼(因爲用戶是愚蠢的,並輸入最殘酷的東西;)) – tonysdg
假設_'string'的C++原因__ – Tas