字符串从Char转换时返回Null

时间:2016-04-23 01:35:33

标签: c++ visual-studio windows-10

并提前感谢。由于不太可能帮助未来的访客,类似的问题被关闭了。具有讽刺意味的是惊人的!

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;
}

而且......它奏效了。它不适用于我的其他程序。我不知道如何处理这个问题。有任何想法吗?并感谢迄今为止的帮助。我觉得与新手打交道并不是很有趣,如果证明太令人沮丧,我理解你是否需要离开这个问题。感谢

2 个答案:

答案 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并不能明智地处理编码,因此您可能必须使用系统特定的功能进行读取。这在很大程度上取决于您的文本文件。

使用文件名(现在在stringwstring中)来打开文件,也会遇到编码问题。

但只要文件名只包含ASCII字符,您就可以将其传递给ifstream构造函数。 Visual C ++,您的编译器,提供了一个带wstring参数的扩展,因此可以使用。确保为流指定二进制模式,因为&#34; .wav&#34;文件是二进制文件。