C++文件输入/输出输出数字而不是字符

C++ File Input/Output Outputting Numbers Instead of Chars

本文关键字:输出 字符 数字 输入 C++ 文件      更新时间:2023-10-16

我创建了一个程序,使用文件输入/输出将角色(作业)随机分配给某个家庭的成员。。它构建成功,但当使用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 chars并不能实现任何有用的功能。一个简单的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();