c++ - 逐行读取输入并转换为 vector 并打印

标签 c++ string vector printing output

尝试在 7 行中准确输入以下包含 14 url 的数据。

google.com gmail.com
google.com maps.com
facebook.com ufl.edu
ufl.edu google.com
ufl.edu gmail.com
maps.com facebook.com
gmail.com maps.com

通过 cin 并将每个 URL 存储为一个 vector ,并在 c++ 中仅打印唯一的 vector :

1 google.com
2 gmail.com
3 facebook.com
4 maps.com
5 ufl.edu 

到目前为止,我已经完成了以下代码,但它没有打印 vector

int main()
{
  vector<string> Urls;
  std::string urls;
  std::getline(std::cin, urls); // get first line
  std::istringstream iss(urls);
  std::string word;

  while (std::getline(std::cin, urls)) {
      std::cout << urls << "\n";
      Urls.push_back(word);    
  }

  for(int i =0; i <Urls.size(); i++) {
     cout <<Urls[i]<<endl;
  }
}

最佳答案

根据您对输入的约束始终是固定的。有 7 行输入,每行包含 2 个 url。所以,总的来说,我们必须扫描 14 个 url 作为字符串。而且,为了找到唯一的字符串,我们可以使用 hashMap 来存储 url 并仅当它不在 hashMap 中时才将 url 插入到 vector 中。整体代码为:

int main() {
vector<string>uniqueUrl;
unordered_map<string,bool>hashMap;
for (int i = 0; i < 14; ++i) {
    string s;
    cin>>s;
    if (hashMap.find(s) == hashMap.end()) {
        uniqueUrl.push_back(s);
        hashMap[s] = true;
    }
  }
  for (int i = 0; i < uniqueUrl.size(); ++i) {
     cout<<uniqueUrl[i]<<endl;
  }
  return 0;
}

关于c++ - 逐行读取输入并转换为 vector 并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493945/

相关文章:

c# - 在 SQL Server 中比较字符串

c++ - 使用简单的构造函数在 C++ 中使用 Vectors 和自定义类的问题

c++ - 我的头文件和 C++ 实现文件有问题

c++ - 如何在标准C++中使用计算机Gotos将动态调度速度提高20%

excel - 如果在工作表中找不到部分字符串,VBA 跳过文件?

java - 如何改进 2 列的字符串解析器方法(读取一行上的 2 个字符串)

c++ - 复制 vector 对

c++ - vector 操作

c++ - QTableView无法隐藏列

c++ - 从客户端接收消息时如何解决窗口卡住问题(无响应)?