c++ - 从字符串中获取单个字符串 char

标签 c++

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/

相关文章:

C++函数模板问题

c++ - 单例析构函数

c++ - 如何创建一个使用开源 C 项目的 C++ 控制台应用程序

c++ - 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

c++ - 无法在 C++ 中的数组中存储值

c++ - MFC菜单打开选项卡动态菜单

c++ - 挑战 - Arduino 返回多个数组

c++ - 顶点着色器的 OpenGL 属性名称

c++ - 在 C++ 中传递一个字符串

c++ - 计算数组中总和存在的对数的算法