简单的C ++程序没有使用wstrings和cout进行编译

时间:2014-04-24 01:53:41

标签: c++ visual-studio-2012 c++11

我正在使用Visual Studio 2012构建这个简单的C ++程序:

#include <stdafx.h>

#include <string>
#include <iostream>

int main()
{
    std::wcout << "Hello World...";

    std::string input_data;

    std::string output_data("Hello. Please type your name");

    std::wcout << output_data;
    std::wcin >> input_data;

    std::wcout << "Your name is " << input_data;

    return 0;
}

我无法编译。得到以下错误:

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::wistream' (or there is no acceptable conversion)

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

IntelliSense: no operator "<<" matches these operands
            operand types are: std::basic_ostream<wchar_t, std::char_traits<wchar_t>> << std::string    

IntelliSense: no operator "<<" matches these operands
            operand types are: std::wostream << std::string

IntelliSense: no operator ">>" matches these operands
            operand types are: std::wistream >> std::string

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:8)

您应该尝试为std::string / std::wstring更改wcin ...或所有wcout / cin的所有cout次事件。 。(在第一种情况下,像L"aaa"这样的字符串前缀。例如,这可以完美地运作:

#include <string>
#include <iostream>

int main()
{
    std::wcout << L"Hello World...";

    std::wstring input_data;

    std::wstring output_data(L"Hello. Please type your name");

    std::wcout << output_data;
    std::wcin >> input_data;

    std::wcout << L"Your name is " << input_data;

    return 0;
}

答案 1 :(得分:0)

或者,您可以将所有内容切换为窄字符串:

#include <string>
#include <iostream>

int main()
{
    std::cout << "Hello World...";

    std::string input_data;

    std::string output_data("Hello. Please type your name");

    std::cout << output_data;
    std::cin >> input_data;

    std::cout << "Your name is " << input_data;

    return 0;
}