如何通过索引为c ++字符串索引赋值

时间:2016-07-08 20:00:14

标签: c++ string

如何通过索引为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"
}

3 个答案:

答案 0 :(得分:9)

您可以这样做,但在按索引分配字符之前,您必须先调整字符串的大小,使这些索引有效。

str.resize(2);

答案 1 :(得分:3)

首先,这段代码甚至没有编译。 错误:

  1. <iostream.h>不是标准标头。仅使用<header>
  2. 使用using namespace std;或前缀coutendlstd::
  3. main必须返回int,而不是void
  4. 然后字符串的大小仍然为零,因此更改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;
}