并提前感谢。由于不太可能帮助未来的访客,类似的问题被关闭了。具有讽刺意味的是惊人的!
C++ convert from 1 char to string?
我需要将char(reader)转换为字符串。我试过这个:
/*stringstream ss;
string convert;
ss << reader;
ss >> convert;
cout << convert;*/
而且:
string convert (1, reader);
两者都没有为ss或convert设置值。我无法弄清楚原因。
如果您决定进行投票,请解释我失踪的内容。我是新手。
编辑: 也许我应该解释一下我想要做得更好的事情。 我在文本文档中有一个wav文件的名称。我想从文件中读取并打开wav。但是,.get返回一个char,我需要一个wstring。所以我试图从char转换为string,然后将string转换为wstring。
编辑: 好吧,我想我被困了。我写了这个代码示例:
#include "stdafx.h"
#include <string>
#include <iostream>
int main()
{
char c = 'a';
std::string h;
std::string str(1, c);
std::cout << str;
std::cin >> h;
return 0;
}
而且......它奏效了。它不适用于我的其他程序。我不知道如何处理这个问题。有任何想法吗?并感谢迄今为止的帮助。我觉得与新手打交道并不是很有趣,如果证明太令人沮丧,我理解你是否需要离开这个问题。感谢
答案 0 :(得分:1)
不要将数据读取为字符,请使用ifstream
。
以下是cplusplus.com tutorial的示例(向下滚动到文本文件)。
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
cout << line << '\n';
}
myfile.close();
}
else cout << "Unable to open file";
答案 1 :(得分:1)
问题描述似乎很清楚,但指定不足:
当你想要阅读多个角色时,“我在文本文档中有一个wav文件的名称。我想从文件中读取并打开wav。但是,.get返回一个char,我需要一个wstring。
.get()
是一个不可思议的选择。
如果文件名在其自己的行上,那么您可以使用getline
标题中的<string>
来读取它,这会保留名称中的任何空格。但是C ++标准库i / o并不能明智地处理编码,因此您可能必须使用系统特定的功能进行读取。这在很大程度上取决于您的文本文件。
使用文件名(现在在string
或wstring
中)来打开文件,也会遇到编码问题。
但只要文件名只包含ASCII字符,您就可以将其传递给ifstream
构造函数。 Visual C ++,您的编译器,提供了一个带wstring
参数的扩展,因此可以使用。确保为流指定二进制模式,因为&#34; .wav&#34;文件是二进制文件。