如何获取字符并将其转换为字符串?C++
How do I take a characters and turn it into a string? C++
我只是想用字母表来尝试制作单词/名字。当我这样做时,cout 最终什么也没输出。
#include <iostream>
#include <ctime>
#include <string>
#include <stdlib.h>
using namespace std;
int main() {
char Alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
string n;
n[0] = Alphabet[10];
n[1] = alphabet[4];
n[2] = alphabet[21];
n[3] = alphabet[8];
n[4] = alphabet[13];
cout << n << endl;
}
您在这里的问题是n
是一个空字符串,这意味着您正在尝试访问不存在的索引。
若要向字符串添加字符,可以使用字符串成员函数push_back
n.push_back(Alphabet[10]);
n.push_back(alphabet[4]);
...
或者,+=
运算符也可以工作:
n += Alphabet[10];
n += alphabet[4];
...
此外,我建议在字符串中使用下标运算符 ([]
.at()
,因为.at()
会为您进行边界检查(这将使这个问题更加明显)。
使用string n;
创建字符串时,将创建一个空字符串。它的长度为零,因此尝试使用n[0]
等访问字符串中的字符位置不起作用。这些在这一点上根本不存在。
如另一个答案中所述,您可以使用成员函数push_back
向字符串添加字符,将其长度增加 1。
当您将n
定义为string n;
时,n
将是一个空字符串(零大小和未指定容量),并且访问索引超出其大小的字符串是未定义的行为。
有两种主要方法可以克服这个问题:
(1) 像在n += Alphabet[10];
中使用运算符+=
,这样字符串对象将相应地调整其大小。请注意,这可能会导致内部不时realloc
操作。
(2)如果您事先知道大小,则可以使用string n(5, ' ')
提前保留足够的空间(在这种情况下用空格填充字符串),这样就不必发生realloc
-操作。
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数