В настоящее время я кодирую небольшую программу, которая будет использоваться для вычисления расстояния между двумя городами с учетом их географических координат (широты и долготы) (как, например, Google Maps) но только для ограниченного числа городов.Бесконечная петля с преобразованием строки в int
Моя программа получает название города, широту и долготу с помощью getline в текстовом файле. Например, Париж будет «paris 48.51.12 2.20.5».
Затем я разбираю строку, чтобы получить: a) имя, b) широту (которая вводится как angle.minutes.seconds), и c) долготу. Я разбираю широту и долготу, чтобы иметь вектор с 3 соответствующими номерами, но сохраняемый как строки.
Следующий шаг - преобразовать вектор строки в вектор int. Я нашел довольно аккуратный метод:
int strtoint(string str)
{
int i=0;
if(!(istringstream(str)>>i)) i=0;
return i;
}
А почему я не использую стои или atoi, я не могу получить мой компилятор (MinGW, в Code :: Blocks 13.12), чтобы понять их , поэтому, возможно, я пропустил шаг.
Однако, когда я пытаюсь использовать его с моим вектором, он переходит в бесконечный цикл, и я не понимаю, почему:
for(int unsigned i=0; i<latitude.size();i++)
{
cout<<latitude[i]<<endl;
i_latitude[i]=strtoint(latitude[i]);
}
С широтой быть вектор строк и i_latitude ИНТ вектор.
следующие работы для меня:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int strtoint(string str)
{
int i=0;
if(!(istringstream(str)>>i)) i=0;
return i;
}
int main()
{
string str="45";
int nbr=strtoint(str);
cout<<nbr<<endl<<endl; //shall return 45 as an integer
string foo [3]= {"45", "32", "15"};
int ifoo [3];
for(int i=0;i<3;i++)
{
ifoo[i]=strtoint(foo[i]);
cout<<ifoo[i]<<endl; //shall return 45 32 15
}
return 0;
}
[редактировать: добавлять примера]
Пожалуйста, включите de [mcve]. Просто используя свой код и заполняя пробелы, как я считаю нужным, я не смог воспроизвести вашу проблему (https://ideone.com/bGqLbA). –
@ AlgirdasPreidžius Я отредактировал вопрос, надеюсь, что это поможет. На самом деле тест, который я предоставляю, отлично подходит для меня, поэтому я действительно не понимаю, почему бесконечный цикл с вектором. Может быть, есть проблема с получением размера вектора? Но если да, то в чем смысл быть динамичным? – Tanos
Это более полезно, если вы публикуете полный пример, который * не работает *. – molbdnilo