C++;如何提取字符串的第一个和其余部分? 假设我有一个字符串“ ABCD < /代码>”,我希望从“ ABCD < /C>”中获得char’ A/COD>,并从“ ABCD”中获得“ BCD < /代码>”的另一个函数。 < P> 编辑:我意识到我以前给出了C++ .NET示例。/P>

C++;如何提取字符串的第一个和其余部分? 假设我有一个字符串“ ABCD < /代码>”,我希望从“ ABCD < /C>”中获得char’ A/COD>,并从“ ABCD”中获得“ BCD < /代码>”的另一个函数。 < P> 编辑:我意识到我以前给出了C++ .NET示例。/P>,c++,string,C++,String,您正在寻找的是substr方法。如果您有一个包含“abcd”的字符串s,执行s.substr(0,1)将得到一个包含“a”的字符串和s.substr(1,3)将得到一个包含“bcd”的字符串。假设您使用的是std::string,您需要: str[0] // for the first char str.substr(1) // for the rest of string str[0] // for the first char ((char*)str+1) // or &str[

您正在寻找的是
substr
方法。如果您有一个包含“abcd”的字符串
s
,执行
s.substr(0,1)
将得到一个包含“a”的字符串和
s.substr(1,3)
将得到一个包含“bcd”的字符串。假设您使用的是
std::string
,您需要:

str[0] // for the first char
str.substr(1) // for the rest of string
str[0] // for the first char

((char*)str+1) // or
&str[1]        // for the rest of string
如果您使用的是标准C
char*
字符串,则需要:

str[0] // for the first char
str.substr(1) // for the rest of string
str[0] // for the first char

((char*)str+1) // or
&str[1]        // for the rest of string

当使用前一种方法时,确保您在代码调用之前捕获<代码> OutoFixRetry异常,或者在调用它之前检查字符串长度。< /P>您是在谈论STD::String,还是一般意义上的“字符串”?@ C++中的提姆,STD::String是“一般意义”。@尼尔-好-那些知道C++的人当然-但是如果一个人必须问这个问题,我不会假设太多…STD::String没有子串方法——即C。谁在投票支持这件事?为什么还有反对票?它已经被更正。@Tim:当答案被“更正”时,否决票不会自动消失。@Seth-我理解-但是用户应该更新否决票。。。虽然我想并不是所有的用户都会回来查看。我有数字,那些被否决的人是其他活跃的参与者,他很快地改变/固定了。FYI,<代码> TCHAR 不是ANSI/ISO C或C++的一部分。虽然OP没有指定字符串格式。@托马斯:我不知道我说的是什么。你投我的票是因为我现在的代码的味道吗?我没有投你的票。我所说的是<代码> TCHAR 不是ANSI C或C++。通常,当OP不提供平台信息时,目标是提供符合ANSI标准的答案。TCHAR是微软的一项发明。

TCHAR s[] = _T("abcd");

// Get 'a'
TCHAR c = s[0];

// Get "bcd"
TCHAR *p = s + 1;