如何通过索引为c ++字符串索引赋值。我尝试过这段代码,但这并没有改变字符串的值。
#include <iostream.h>
#include <string>
void change(string & str)
{
str[0] = '1';
str[1] = '2';
// str = "12" ; // it works but i want to assign value to each index separately.
}
void main()
{
string str;
change(str);
cout << str << endl; // expected "12"
}
答案 0 :(得分:9)
您可以这样做,但在按索引分配字符之前,您必须先调整字符串的大小,使这些索引有效。
str.resize(2);
答案 1 :(得分:3)
首先,这段代码甚至没有编译。 错误:
<iostream.h>
不是标准标头。仅使用<header>
。using namespace std;
或前缀cout
和endl
加std::
。main
必须返回int
,而不是void
。然后字符串的大小仍然为零,因此更改str[0]
和str[1]
是一种未定义的行为。
要修复此问题,请使用std::string::resize (size_t)
设置其维度:
str.resize (2);
答案 2 :(得分:0)
对sstream
使用STL stringstreams
可以更轻松地添加和创建动态字符串。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void change(stringstream *ss, char value) {
*ss << value;
}
int main() {
stringstream stream;
stream << "test";
change(&stream, 't');
cout << stream.str() << endl; //Outputs 'testt'
return 0;
}