C++文件输入/输出输出数字而不是字符
C++ File Input/Output Outputting Numbers Instead of Chars
我创建了一个程序,使用文件输入/输出将角色(作业)随机分配给某个家庭的成员。。它构建成功,但当使用cout并实际看到结果时,我可以理解为什么程序不起作用。
以下是我认为有问题的代码片段:
std::string foo = std::string("Preferences/") + std::to_string(members[random]) + "-Preferences";
cout << foo << endl;
这是成员[随机]数组,它从这个数组中随机选择成员,查看他们的可用时间,并根据他们的首选项输入文件为他们分配工作。
unsigned const char members[22] =
{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v' };
我创建了一个随机数选择器,它遍历0-21,并将它创建的值分配给变量random。因此,从本质上讲,它是成员[随机]和完全随机的。
这是我在终端中得到的输出。
Preferences/116-Preferences
但我将输出设置为"首选项/成员[随机]-首选项"。它访问的是一个数字,而不是我的数组字符。
我创建了一个时装<lt;成员[随机];就在它下面,每次运行程序时,我都会得到
Preferences/107-Preferences <---- A random number every time
k <---- random letter every time.
所以我知道它一定是在访问我的随机函数,但把它分配给了数字!我如何解决这个问题,以便我的正确输出可以是:
Preferences/t-Preferences
请帮帮我,谢谢!
"你对管道的思考越多,就越容易停止排水"-斯科蒂,《星际迷航III》
将members
声明为unsigned char
s并不能实现任何有用的功能。一个简单的char
就足够了。std::string
已经实现了一个带char
参数的重载+
运算符,所以它比您想象的要容易得多:
const char members[22] = {
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v' };
// ...
std::string foo = std::string("Preferences/") + members[random]
+ "-Preferences";
没有::std::to_string(char)
,只有(不太接近的)::std::to_string(int)
。因此,你的角色实际上被转换为它的数字表示,你会得到不想要的结果。
改为尝试
std::string foo("Preferences/");
foo = foo.append(1, members[random]).append("-Preferences");
使用字符串流的变体:
ostringstream oss;
oss << "Preferences/" << members[random] << "-Preferences";
// get your string via:
oss.str();
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 字符数组到十六进制字符串的转换 - 意外输出
- 存储和打印字符,但输出不是预期的
- 在函数中连接两个字符,并在 C++ 中返回输出
- 为什么要更改这两个代码的输出"&"字符?
- 输出字符时出现分段错误**
- 如何输出字符**
- C ++中的输出字符数组会产生奇怪的符号
- 输出字符的ASCII值
- 输出字符文字 { 以流C++
- 无法在结构中输出字符