Вводите только целые числа из строки файла .txt [дубликаты]

0

Мне было интересно, есть ли способ получить только целые числа из строки текста, используя C++ без использования seekg().

Допустим, у моего файла data.txt есть только эта строка: Position {324,71,32} в нем, и я хочу получить только целочисленные значения.

Я попробовал следующий код, но это не сработало, и я искал в Интернете решение и не нашел - почему я спрашиваю.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string x, num1, num2, num3;
    fstream fs;
    fs.open("data.txt", ios::in);
    if (fs.fail())
        cerr << "Failed to open file";
    fs >> x;
    num1 = x;
    fs >> x;
    num2 = x;
    fs >> x;
    num3 = x;
    cout << num1 << " " << num2 << " " <<num3 << endl;
    return 0;
}    
Теги:
file-io

2 ответа

0

1.Посмотреть текстовую строку, чтобы идентифицировать символы, составляющие ваши индивидуальные номера.

2.конвертировать строку, содержащую число, в целое число, используя atoi

Победа 3.declare

#include <iostream>
#include <stdlib.h>

using namespace  std;

int main() {
        cout << "hello world!" << endl;

        char * input = "Position {324,71,32}";
        cout << "input:  " << input << endl;

//find start of numbers
        int i = 0;
        char cur = 'a';
        while (cur != '{') {
          cur = input[i];

          i++;
        }
//identify individual numbers and convert them from char array to integer
        while (cur != '}') {
          cur = input[i];

//identify individual number
          char num_char[100];
          int j = 0;
          while (cur != ',' && cur != '}') {
            num_char[j] = cur;
            j++;
            i++;
            cur = input[i];
          }
          num_char[j] = '\0';

//convert to integer
          int num = atoi(num_char);

          cout << "num:  " << num << "  num*2:  " << num*2 << endl;

          i++;
        }

        return 0;
}
  • 0
    Это не очень C ++ способ обработки парсинга.
0

Попробуйте что-нибудь еще:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string x;
    char c;
    int num1, num2, num3;

    fstream fs;
    fs.open("data.txt", ios::in);
    if (!fs)
        cerr << "Failed to open file";
    else
    {
        fs >> x; // "Position"
        fs >> c; // '{' 
        fs >> num1;
        fs >> c; // ','  
        fs >> num2;
        fs >> c; // ','
        fs >> num3;

        if (!fs)
            cerr << "Failed to read file";
        else
            cout << num1 << " " << num2 << " " << num3 << endl;
    }
    return 0;
}    

Или это:

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    string s, x;
    char c;
    int num1, num2, num3;

    fstream fs;
    fs.open("data.txt", ios::in);
    if (!fs)
        cerr << "Failed to open file";
    else if (!getline(fs, s))
        cerr << "Failed to read file";
    else
    {
        istringstream iss(s);

        iss >> x; // "Position"
        iss >> c; // '{' 
        iss >> num1;
        iss >> c; // ','  
        iss >> num2;
        iss >> c; // ','
        iss >> num3;

        if (!iss)
            cerr << "Failed to parse line";
        else
            cout << num1 << " " << num2 << " " << num3 << endl;
    }
    return 0;
}    

Ещё вопросы

Сообщество Overcoder
Наверх
Меню