我做的字符串分析,基本上我希望做的是这样的:如何组合多个char来创建一个字符串?
string signature = char[index+1] + '/' + char[index+2];
,但你不能做对char的,这样使我对这个问题的字符串连接,我怎么可以模拟级联在char的?
我知道C++中的字符串库有附加,但我不认为这适用于我的情况。有任何想法吗?
我做的字符串分析,基本上我希望做的是这样的:如何组合多个char来创建一个字符串?
string signature = char[index+1] + '/' + char[index+2];
,但你不能做对char的,这样使我对这个问题的字符串连接,我怎么可以模拟级联在char的?
我知道C++中的字符串库有附加,但我不认为这适用于我的情况。有任何想法吗?
您可以连接字符到std::string
,您只需要其中一个操作数为std::string
,否则您将添加整数。
std::string signature = std::string() + char_array[index+1] + '/' + char_array[index+2];
注意,如果无论是在链中的第一个或第二个操作数是std::string
这仅适用。这将导致第一个电话operator+
返回std::string
,其余将跟随。所以这并没有给出预期的结果:
std::string signature = char_array[index+1] + '/' + char_array[index+2] + std::string();
您可以比较容易地连接这些字符和C风格的字符串到现有的字符串:
string signature;
signature += char_array[index + 1]; // append character from char_array[index+1]
signature += '/';
signature += char_array[index + 2]; // append character from char_array[index+2]
你只需要确保+
或+=
的左侧是一个std::string
。
如果你使用.Net做这个,可以在字符串构造函数中使用字符数组。
http://msdn.microsoft.com/en-us/library/ttyxaek9(v=vs.110).aspx
在C++ 11,你实际上可以做:
std::string signature{chars[index+1], '/', chars[index+2]};
不知道这是多么有用将在真正的代码,但它与你的榜样交易。
除了史蒂夫的和本杰明的解决方案,你也可以使用一个std::stringstream
:
std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();
谢谢!对于一个字符串你可以做很多事情,很难跟踪它 – Sarah