在c ++中获取2个空格之间的字符串

时间:2017-05-09 21:42:35

标签: c++ string split whitespace

我正在从文本文件中读取坐标。例如“0 50 100”。我将我的文本文件保存在字符串向量中。我想分别获得0分,50分和100分。我认为我可以将它作为获取2个空格之间的字符串然后使用stoi将其转换为整数。但我无法单独在两个空格之间获得一个字符串。我分享了我的尝试。我知道这不正确。你能帮我找到我的解决方案吗?

示例文本输入:Saloon 4 0 0 50 0 50 100 0 100.(4表示轿车有4个点。例如:4个节目后的前两个整数(x1,y1))

    for (int j = 2; j < n * 2 + 2; j++){
            size_t pos = apartmentInfo[i].find(" ");
            a = stoi(apartmentInfo[i].substr(pos + j+1,2));
            cout << "PLS" << a<<endl;
        }

2 个答案:

答案 0 :(得分:0)

您可以使用SvcUtil.exe IPlotiservice.wsdl /t:code /serviceContract 从文本中提取整数:

std::istringstream

Live Example

编辑:读取名称,数字,然后是整数:

#include <sstream>
#include <vector>
#include <string>
#include <iostream>

int main()
{
   std::string test = "0 50 100";
   std::istringstream iss(test);

   // read in values into our vector
   std::vector<int> values;
   int oneValue;
   while (iss >> oneValue )
     values.push_back(oneValue);

   // output results
   for(auto& v : values)
     std::cout << v << "\n";
}

Live Example 2

答案 1 :(得分:0)

在正常情况下,从int等输入流中解析数字很容易,因为流已经具有必要的解析功能。

例如,用于从文件输入流中解析std::ifstream in{"my_file.txt"}; int number; in >> number; // Read a token from the stream and parse it to 'int'.

coord

假设您有一个包含x和y坐标的聚合类struct coord { int x, y; };

coord

您可以为类std::istream& operator>>(std::istream& in, coord& c) { return in >> c.x >> c.y; // Read two times consecutively from the stream. } 添加自定义分析行为,以便在从输入流解析时可以同时读取x和y值。

coord

现在标准库中使用流的所有工具都可以解析std::string type; int nbr_coords; std::vector<coord> coords; if (in >> type >> nbr_coords) { std::copy_n(std::istream_iterator<coord>{in}, nbr_coords, std::back_inserter(coords)); } 个对象。 E.g

coord

这将读取并解析正确数量的coord个对象到一个向量中,每个{{1}}对象包含一个x和y坐标。

https://devcenter.heroku.com/articles/python-runtimes#supported-python-runtimes

Live example