for each (std::string s in m_intro.text) // std::vector<string>
{
for (int i = 0; i < s.length(); i++)
{
char* chr = &s.at(i);
chr[i+1] = NULL;
std::string t(chr);
// other code is used below not shown as not relivent
}
}
我想从字符串中获取一个字符。我得到的每个字符然后都想变成一个字符串(有一个函数需要 const std::string&
)
上面的代码只运行一次,但是在第一个循环之后整个 s
都是空的。我明白为什么会这样。
我想要的是在每个循环中从 s
获取下一个字符并将其存储为字符串。
最佳答案
char* chr = &s.at(i);
chr[i+1] = NULL;
std::string t(chr);
当 char
是 C 字符串(或 char
数组)的一部分时,您使用正确的(如果过时的)方法将下一个元素设置为 NULL
终止字符串。
但是在这种情况下,这无关紧要;您只是索引到 std::string
并将其所有字符替换为 NULL
,这当然不是您的意思。
std::string
有一个构造函数,您可以使用它来避免这种麻烦:
std::string t(1, s.at(i));
// ^ ^ ^
// | | |
// string | |
// | |
// of length 1 |
// char |
// |
// each having value s.at(i)
无需弄乱指针或 char
数组或 NULL
终止符。
关于c++ - 从字符串中获取单个字符串 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657260/