【发布时间】:2021-12-04 21:54:30
【问题描述】:
比较 if 语句中的两个向量会引发异常(分段错误)。
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
std::vector<std::string>setup_file_contents_vec{};
std::ifstream setup_file_required_scan( "exposcan.txt" );
std::string buffer;
while(setup_file_required_scan >> buffer) { setup_file_contents_vec.push_back(buffer); }
std::vector <std::string> user_details_confirmation(3);
for (int i = 0; i < 4; i++){ std::cout << " "; }
std::cout << " Login details 1/3\n\n";
for (int i = 0; i < 6; i++){ std::cout << " "; }
std::cout << "First Name : ";
std::cin >> user_details_confirmation[0];
if(user_details_confirmation[0] != setup_file_contents_vec[0]) {/* code */}
【问题讨论】:
-
即使在添加
main函数以尝试使其在某种程度上有效的minimal reproducible example 时,它仍然不会复制您询问的问题。代码根本不应该构建。当您执行std::cin >> user_details_confirmation[0]时,不应有任何“输入”运算符>>。请创建一个正确的minimal reproducible example,它可以复制您询问的问题,并且没有其他错误。 IO 事实上,复制粘贴你拥有的实际代码,如果它足够少的话。 -
在不相关的笔记上,而不是例如
for (int i = 0; i < 6; i++){ std::cout << " "; }为什么不简单地std::cout << " ";? -
添加
#include <string>有帮助吗?由于您使用的是std::string,因此您应该包含定义它的标头。 -
@IgorTandetnik 我已经有了,只是我忘了在这个问题中包含它。
-
一种可能:文件
exposcan.txt为空或当前工作目录中不存在,所以setup_file_contents_vec为空,然后setup_file_contents_vec[0]表现出未定义的行为。