C++字符串附加问题
C++ string appending problems
我现在遇到了一些问题,在设置 c++ 字符串的某些值后,尝试将 char 数组附加到 c++ 字符串上,但我不明白为什么。我想知道你们中是否有人知道发生了什么。
这是我尝试运行的代码:
string test = "";
test.resize(1000);
char sample[10] = { "Hello!" };
test[0] = '1';
test[1] = '2';
test[2] = '3';
test[3] = '4';
test += sample;
通过调试器运行它,似乎test
只是"1234",并且从未添加"Hello"。
提前感谢!
它是添加的,但在字符串中已有的 1000 个字符之后(其中 4 个是 1234,996 个是"\0"字符)"。
resize 函数确实为字符串对象分配 1000 个字符,但也将长度设置为 1000。这就是为什么有时你想做的是使用reserve
这通常是我会做的:
string test = "";
test.reserve(1000); // length still 0, capacity: 1000
char sample[10] = { "Hello!" };
test.push_back('1'); // length is 1
test.push_back('2'); // length is 2
test.push_back('3'); // length is 3
test.push_back('4'); // length is 4
test += sample; // length is now 10
或者,如果您想按照自己的方式进行操作:
string test = "";
test.resize(1000); // length is 1000
char sample[10] = { "Hello!" };
test[0] = '1'; // length is 1000
test[1] = '2'; // length is 1000
test[2] = '3'; // length is 1000
test[3] = '4'; // length is 1000
test.resize(4); // length is now 4, but the internal buffer still has a capacity of 1000 characters
test += sample; // length is now 10
我认为问题是当你test.resize(1000)
它1000
字符串中添加了空字符(' '
)。调试器可能会将空字符视为字符串结束标记。因此,在这些空字符之后添加的任何文本都不会显示。
假设文本等于此值('_'
= 行尾标记的空字符):
test = "1234_______________Hello!";
^
Debugger thinks text ends here
相关文章:
- 编译包含字符串的代码时遇到问题
- setlocale的C++土耳其字符串问题
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 我的逻辑反转字符串中的元音有什么问题?
- 按字母顺序对C++问题中的子字符串索引进行分区
- 用户输入字符串的文件附加问题..C++
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 在将字符串放入字符串向量时遇到问题?
- 将文件复制到自定义位置,存在字符串转换问题
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 不确定出了什么问题(字符串输入)
- 反向和计数字符串的 C++ 问题
- 反转具有返回值的字符串时出现问题
- C++字符串问题-如何访问字符串元素
- public:静态常量字符串声明/初始化问题
- 在MySql中使用字符串操作函数有什么问题
- Libwesockets.h:lws_write:C++字符串到C的转换和发送问题
- 问题:字符串在另一个字符串上写入
- 日志文件输出的问题-字符串和c_str之间的差异- c++