没有运算符"<<"匹配这些操作数

no operators "<<" match these operands

本文关键字:lt 操作数 运算符      更新时间:2023-10-16

我收到错误: 没有运算符">>"与这些操作数匹配。 和 字符串不是 std 的成员。

#include "iostream"
#include "string.h"
#include "stdafx.h"
int main()
{
std::string forName;
std::cout << "Write your name below please:/n";
std::cin >> forName;
std::cout << forName;
}

除非您尝试包含自己的头文件,否则 C++ 中的include语句应使用尖括号:

#include <iostream>
#include <string.h>
#include <stdafx.h>

另外,如果你正在写C++:我建议你使用<string>而不是<string.h>,因为后者是 C 标头(不是 C++(,并且在 C++ 中已弃用。如果不是,则忽略此位:)

上面包含的所有内容#include "stdafx.h"都被Visual Studio忽略。有关为什么会这样的更多信息,可以在这里找到:Visual Studio 中"stdafx.h"有什么用?

所以

#include "iostream"
#include "string.h"
#include "stdafx.h"

必须是

#include "stdafx.h"
#include "iostream"
#include "string.h"

之后,您可以通过用适当的<>""包围标题来优化对包含文件的搜索。此处介绍了选择要使用的方法:#include<文件名>和 #include"文件名"有什么区别?

此外,string.h 是 C 字符串实用程序的 C 标头。它不包括类string。为此,您需要

#include <string>

如果您确实需要 C 字符串实用程序,建议您使用 C++ 版本

#include <cstring>

您需要将引号更改为尖括号。

#include <iostream>
#include <string>
#include <stdafx.h>

有关两者之间区别的更多信息,请参阅此问题:尖括号<>和双引号" "之间的区别,同时在C++中包含头文件?

如果你有自己的头文件,那么像这样包含:

#include "yourheader.h"

但是如果你使用的是标准的头文件,那么你必须像这样包含:

#include <iostream>

必须将#include "filename"替换为#include <filename>

对于#include "filename"预处理器在包含指令的文件所在的目录中搜索。此方法通常用于包含程序员定义的头文件。

对于#include <filename>预处理器以依赖于实现的方式进行搜索,通常在编译器/IDE 预先指定的搜索目录中。此方法通常用于包含标准库头文件。

string.h 库实际上在 C++ 中被弃用。 尝试改用字符串,或者如果您需要来自string.h(strcpy,strlen(的功能,请尝试使用cstring。