Как найти в файле числа строки c

В файле содержится строка “Число 10 число 20”. Первое число обрабатывается, а на второе выдает стабильно 0. При этом, если выводить только индексы первых элементов чисел в строке (6 и 16) – все работает. В чем может быть проблема?
введите сюда описание изображения

введите сюда описание изображения

int main()
{
    setlocale(LC_CTYPE, "rus");
    string line;

    ifstream in("F:\foo.txt"); 

    if (in.is_open())
    {
        getline(in, line);
    }

    int digits = line.find_first_of("1234567890");
    int digits2 = line.find_last_of("1234567890");

    int number = atoi(line.c_str() + digits);
    int number2 = atoi(line.c_str() + digits2);


    cout << number << endl;
    cout << number2 << endl;
    in.close();     

    system("pause");
    return 0;

}

задан 24 янв 2020 в 18:01

Bieroed's user avatar

Итак,

int digits2 = line.find_last_of("1234567890");

Что же мы видим в "Число 10 число 20"? Точно! Самую распоследнюю цифру – 0 из 20.

int number2 = atoi(line.c_str() + digits2);

Что же тут такое line.c_str() + digits2? Это строка "0"

Что atoi должен вернуть для такой строки, как не 0?

И чему вы удивлены? И – с индексами:

 Число 10 число 20
           1111111
 01234567890123456

Все верно, 6 – индекс, с которого начинается 10 число 20, 16 – индекс последнего нуля…

ответ дан 24 янв 2020 в 18:08

Harry's user avatar

HarryHarry

214k15 золотых знаков117 серебряных знаков228 бронзовых знаков

При этом, если выводить только индексы первых элементов чисел в строке (6 и 16) – все работает

Вы совершенно правильно заметили, что второй индекс равен 16. А теперь посмотрите, на какой символ он указывает

Число 10 число 20
^^^^^^^^^^^^^^^^^
          1111111
01234567890123456

Т.е. digits2 указывает на последнюю цифру в строке. Что как бы логично. Строка

int digits2 = line.find_last_of("1234567890");

находит последнее вхождение цифры.

Чтобы программа работала, вам нужно сместиться влево от digits2 на начало числа

ответ дан 24 янв 2020 в 18:11

Anton Shchyrov's user avatar

Anton ShchyrovAnton Shchyrov

32.9k2 золотых знака29 серебряных знаков59 бронзовых знаков

Алгоритм решения: (предлагаю Вам переписать Ваш вариант)

1) Разбить строки на лексемы через stringstream

2) проверить цифры или нет

3) обработать (сделать то, что Вам нужно)

Вместо файла будет просто строка(представим что Вы туда сдампили файл) Вот Вам 2 схожих метода как это сделать

#include <iostream> 
#include <sstream> 
#include <algorithm>
#include <vector>
#include <cctype>
#include <iterator>


void foo(std::string str) {

    std::cout << "first" << std::endl;

    std::stringstream ss{ str };
    std::string tmp{};
    std::vector<int64_t> data_v;

    while (ss >> tmp) {
        if (std::all_of(std::begin(tmp), std::end(tmp), std::isdigit)) {
            data_v.push_back(std::stoi(tmp));
        }
    }

    for (const auto& v : data_v) {
        std::cout << v << std::endl;
    }
}


void foo2(std::string str) {

    std::cout << "second" << std::endl;


    std::stringstream ss(str);
    std::istream_iterator<std::string> begin(ss), end;
    std::vector<std::string> vec_str(begin, end);

    std::vector<int> data_v;

    auto f{ [&](const std::string& s) { if (std::count_if(std::begin(s), std::end(s), std::isdigit) == s.size()) { data_v.push_back(std::atoi(s.c_str())); }} };
    std::for_each(std::begin(vec_str), std::end(vec_str), f);

    for (const auto& v : data_v) {
        std::cout << v << std::endl;
    }
}


int main() {

    std::string str{ "num 10 num 20" };

    foo(str);

    foo2(str);

    return 0;
}

ответ дан 24 янв 2020 в 20:13

Oh-Ben-Ben's user avatar

Oh-Ben-BenOh-Ben-Ben

1,4921 золотой знак6 серебряных знаков12 бронзовых знаков

6

I have a requirement to find and extract a number contained within a string.

For example, from these strings:

string test = "1 test"
string test1 = " 1 test"
string test2 = "test 99"

How can I do this?

David Sopko's user avatar

David Sopko

5,1032 gold badges38 silver badges41 bronze badges

asked Jan 19, 2011 at 10:24

van's user avatar

7

d+ is the regex for an integer number. So

//System.Text.RegularExpressions.Regex
resultString = Regex.Match(subjectString, @"d+").Value;

returns a string containing the first occurrence of a number in subjectString.

Int32.Parse(resultString) will then give you the number.

Mehdi Dehghani's user avatar

answered Jan 19, 2011 at 10:29

Tim Pietzcker's user avatar

Tim PietzckerTim Pietzcker

326k58 gold badges499 silver badges558 bronze badges

16

Here’s how I cleanse phone numbers to get the digits only:

string numericPhone = new String(phone.Where(Char.IsDigit).ToArray());

answered Mar 27, 2013 at 21:07

Dave's user avatar

DaveDave

3,2431 gold badge17 silver badges15 bronze badges

3

go through the string and use Char.IsDigit

string a = "str123";
string b = string.Empty;
int val;

for (int i=0; i< a.Length; i++)
{
    if (Char.IsDigit(a[i]))
        b += a[i];
}

if (b.Length>0)
    val = int.Parse(b);

Danny Beckett's user avatar

Danny Beckett

20.3k24 gold badges106 silver badges134 bronze badges

answered Jan 19, 2011 at 10:27

Sasha Reminnyi's user avatar

Sasha ReminnyiSasha Reminnyi

3,4222 gold badges23 silver badges27 bronze badges

6

use regular expression …

Regex re = new Regex(@"d+");
Match m = re.Match("test 66");

if (m.Success)
{
    Console.WriteLine(string.Format("RegEx found " + m.Value + " at position " + m.Index.ToString()));
}
else
{
    Console.WriteLine("You didn't enter a string containing a number!");
}

answered Jan 19, 2011 at 10:27

Pranay Rana's user avatar

Pranay RanaPranay Rana

174k35 gold badges237 silver badges263 bronze badges

0

What I use to get Phone Numbers without any punctuation…

var phone = "(787) 763-6511";

string.Join("", phone.ToCharArray().Where(Char.IsDigit));

// result: 7877636511

answered Jan 16, 2015 at 14:55

ejcortes's user avatar

ejcortesejcortes

6097 silver badges13 bronze badges

0

Regex.Split can extract numbers from strings. You get all the numbers that are found in a string.

string input = "There are 4 numbers in this string: 40, 30, and 10.";
// Split on one or more non-digit characters.
string[] numbers = Regex.Split(input, @"D+");
foreach (string value in numbers)
{
    if (!string.IsNullOrEmpty(value))
    {
    int i = int.Parse(value);
    Console.WriteLine("Number: {0}", i);
    }
}

Output:

Number: 4
Number: 40
Number: 30
Number: 10

answered Oct 15, 2013 at 20:11

Tabares's user avatar

TabaresTabares

4,0435 gold badges40 silver badges46 bronze badges

1

if the number has a decimal points, you can use below

using System;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            Console.WriteLine(Regex.Match("anything 876.8 anything", @"d+.*d*").Value);
            Console.WriteLine(Regex.Match("anything 876 anything", @"d+.*d*").Value);
            Console.WriteLine(Regex.Match("$876435", @"d+.*d*").Value);
            Console.WriteLine(Regex.Match("$876.435", @"d+.*d*").Value);
        }
    }
}

results :

“anything 876.8 anything” ==> 876.8

“anything 876 anything” ==> 876

“$876435” ==> 876435

“$876.435” ==> 876.435

Sample : https://dotnetfiddle.net/IrtqVt

Community's user avatar

answered Aug 30, 2019 at 14:05

Tarek El-Mallah's user avatar

Tarek El-MallahTarek El-Mallah

3,9801 gold badge31 silver badges46 bronze badges

2

Here’s a Linq version:

string s = "123iuow45ss";
var getNumbers = (from t in s
                  where char.IsDigit(t)
                  select t).ToArray();
Console.WriteLine(new string(getNumbers));

Danny Beckett's user avatar

Danny Beckett

20.3k24 gold badges106 silver badges134 bronze badges

answered Jan 13, 2013 at 1:25

spajce's user avatar

spajcespajce

7,0165 gold badges29 silver badges44 bronze badges

2

Another simple solution using Regex
You should need to use this

using System.Text.RegularExpressions;

and the code is

string var = "Hello3453232wor705Ld";
string mystr = Regex.Replace(var, @"d", "");
string mynumber = Regex.Replace(var, @"D", "");
Console.WriteLine(mystr);
Console.WriteLine(mynumber);

answered Jan 18, 2014 at 11:03

1

You can also try this

string.Join(null,System.Text.RegularExpressions.Regex.Split(expr, "[^\d]"));

answered Jan 19, 2011 at 10:27

BvdVen's user avatar

BvdVenBvdVen

2,90123 silver badges33 bronze badges

1

Here is another Linq approach which extracts the first number out of a string.

string input = "123 foo 456";
int result = 0;
bool success = int.TryParse(new string(input
                     .SkipWhile(x => !char.IsDigit(x))
                     .TakeWhile(x => char.IsDigit(x))
                     .ToArray()), out result);

Examples:

string input = "123 foo 456"; // 123
string input = "foo 456";     // 456
string input = "123 foo";     // 123

answered Sep 28, 2016 at 6:35

fubo's user avatar

fubofubo

44.6k17 gold badges102 silver badges136 bronze badges

Just use a RegEx to match the string, then convert:

Match match = Regex.Match(test , @"(d+)");
if (match.Success) {
   return int.Parse(match.Groups[1].Value);
}

answered Jan 19, 2011 at 10:29

Daniel Gehriger's user avatar

Daniel GehrigerDaniel Gehriger

7,3192 gold badges33 silver badges55 bronze badges

 string input = "Hello 20, I am 30 and he is 40";
 var numbers = Regex.Matches(input, @"d+").OfType<Match>().Select(m => int.Parse(m.Value)).ToArray();

answered Aug 18, 2017 at 18:08

Ramireddy Ambati's user avatar

1

You can do this using String property like below:

 return new String(input.Where(Char.IsDigit).ToArray()); 

which gives only number from string.

Rahul Hendawe's user avatar

answered Dec 15, 2016 at 17:31

Shyam sundar shah's user avatar

For those who want decimal number from a string with Regex in TWO line:

decimal result = 0;
decimal.TryParse(Regex.Match(s, @"d+").Value, out result);

Same thing applys to float, long, etc…

answered Oct 5, 2016 at 3:19

Richard Fu's user avatar

Richard FuRichard Fu

5968 silver badges27 bronze badges

var match=Regex.Match(@"a99b",@"d+");
if(match.Success)
{
    int val;
    if(int.TryParse(match.Value,out val))
    {
        //val is set
    }
}

answered Jan 19, 2011 at 10:29

spender's user avatar

spenderspender

117k33 gold badges227 silver badges346 bronze badges

Here is another simple solution using Linq which extracts only the numeric values from a string.

var numbers = string.Concat(stringInput.Where(char.IsNumber));

Example:

var numbers = string.Concat("(787) 763-6511".Where(char.IsNumber));

Gives: “7877636511”

answered Apr 11, 2022 at 14:08

Bloggrammer's user avatar

BloggrammerBloggrammer

8268 silver badges20 bronze badges

The question doesn’t explicitly state that you just want the characters 0 to 9 but it wouldn’t be a stretch to believe that is true from your example set and comments. So here is the code that does that.

        string digitsOnly = String.Empty;
        foreach (char c in s)
        {
            // Do not use IsDigit as it will include more than the characters 0 through to 9
            if (c >= '0' && c <= '9') digitsOnly += c;
        }

Why you don’t want to use Char.IsDigit() – Numbers include characters such as fractions, subscripts, superscripts, Roman numerals, currency numerators, encircled numbers, and script-specific digits.

answered Jan 18, 2015 at 18:26

Atters's user avatar

AttersAtters

8018 silver badges19 bronze badges

var outputString = String.Join("", inputString.Where(Char.IsDigit));

Get all numbers in the string.
So if you use for examaple ‘1 plus 2′ it will get ’12’.

answered Sep 16, 2015 at 14:21

Tom's user avatar

TomTom

1391 silver badge14 bronze badges

Extension method to get all positive numbers contained in a string:

    public static List<long> Numbers(this string str)
    {
        var nums = new List<long>();
        var start = -1;
        for (int i = 0; i < str.Length; i++)
        {
            if (start < 0 && Char.IsDigit(str[i]))
            {
                start = i;
            }
            else if (start >= 0 && !Char.IsDigit(str[i]))
            {
                nums.Add(long.Parse(str.Substring(start, i - start)));
                start = -1;
            }
        }
        if (start >= 0)
            nums.Add(long.Parse(str.Substring(start, str.Length - start)));
        return nums;
    }

If you want negative numbers as well simply modify this code to handle the minus sign (-)

Given this input:

"I was born in 1989, 27 years ago from now (2016)"

The resulting numbers list will be:

[1989, 27, 2016]

answered May 24, 2016 at 19:08

Thomas C. G. de Vilhena's user avatar

An interesting approach is provided here by Ahmad Mageed, uses Regex and StringBuilder to extract the integers in the order in which they appear in the string.

An example using Regex.Split based on the post by Ahmad Mageed is as follows:

var dateText = "MARCH-14-Tue";
string splitPattern = @"[^d]";
string[] result = Regex.Split(dateText, splitPattern);
var finalresult = string.Join("", result.Where(e => !String.IsNullOrEmpty(e)));
int DayDateInt = 0;

int.TryParse(finalresult, out DayDateInt);

d219's user avatar

d219

2,6895 gold badges30 silver badges36 bronze badges

answered May 2, 2018 at 19:53

Simba's user avatar

SimbaSimba

4795 silver badges7 bronze badges

I have used this one-liner to pull all numbers from any string.

var phoneNumber = "(555)123-4567";
var numsOnly = string.Join("", new Regex("[0-9]").Matches(phoneNumber)); // 5551234567

answered Mar 20, 2021 at 2:30

Reed's user avatar

ReedReed

1,4851 gold badge21 silver badges37 bronze badges

3

  string verificationCode ="dmdsnjds5344gfgk65585";
            string code = "";
            Regex r1 = new Regex("\d+");
          Match m1 = r1.Match(verificationCode);
           while (m1.Success)
            {
                code += m1.Value;
                m1 = m1.NextMatch();
            }

answered Feb 27, 2013 at 5:56

Manoj Gupta's user avatar

2

Did the reverse of one of the answers to this question:
How to remove numbers from string using Regex.Replace?

// Pull out only the numbers from the string using LINQ

var numbersFromString = new String(input.Where(x => x >= '0' && x <= '9').ToArray());

var numericVal = Int32.Parse(numbersFromString);

Community's user avatar

answered Jan 11, 2013 at 18:05

mwilly's user avatar

0

Here is my Algorithm

    //Fast, C Language friendly
    public static int GetNumber(string Text)
    {
        int val = 0;
        for(int i = 0; i < Text.Length; i++)
        {
            char c = Text[i];
            if (c >= '0' && c <= '9')
            {
                val *= 10;
                //(ASCII code reference)
                val += c - 48;
            }
        }
        return val;
    }

answered Oct 11, 2018 at 9:25

HS_Kernel's user avatar

static string GetdigitFromString(string str)
    {
        char[] refArray = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        char[] inputArray = str.ToCharArray();
        string ext = string.Empty;
        foreach (char item in inputArray)
        {
            if (refArray.Contains(item))
            {
                ext += item.ToString();
            }
        }
        return ext;
    }

answered Jan 13, 2013 at 0:43

Ruby Beginner's user avatar

1

here is my solution

string var = "Hello345wor705Ld";
string alpha = string.Empty;
string numer = string.Empty;
foreach (char str in var)
{
    if (char.IsDigit(str))
        numer += str.ToString();
    else
        alpha += str.ToString();
}
Console.WriteLine("String is: " + alpha);
Console.WriteLine("Numeric character is: " + numer);
Console.Read();

answered Jan 18, 2014 at 10:39

You will have to use Regex as d+

d matches digits in the given string.

answered Jan 19, 2011 at 10:28

Sachin Shanbhag's user avatar

Sachin ShanbhagSachin Shanbhag

54.1k11 gold badges88 silver badges103 bronze badges

string s = "kg g L000145.50rn";
        char theCharacter = '.';
        var getNumbers = (from t in s
                          where char.IsDigit(t) || t.Equals(theCharacter)
                          select t).ToArray();
        var _str = string.Empty;
        foreach (var item in getNumbers)
        {
            _str += item.ToString();
        }
        double _dou = Convert.ToDouble(_str);
        MessageBox.Show(_dou.ToString("#,##0.00"));

answered Jan 19, 2016 at 7:25

watcharachai unvijit's user avatar

Using @tim-pietzcker answer from above, the following will work for PowerShell.

PS C:> $str = '1 test'
PS C:> [regex]::match($str,'d+').value
1

answered Feb 19, 2019 at 20:45

user2320464's user avatar

user2320464user2320464

3611 gold badge5 silver badges11 bronze badges

2 / 2 / 0

Регистрация: 05.12.2013

Сообщений: 316

1

Найти числа в строке

18.06.2019, 15:02. Показов 25878. Ответов 13


Студворк — интернет-сервис помощи студентам

Добрый день! Пишу небольшую программу и появилась необходимость найти в строке с текстом найти числа и вывести их в label. Всё бы было просто, если бы цифры имели всегда одинаковую длину, то я бы их просто вырезал Substring, но нет каждый раз числа могу быть разных размеров, допустим, пример строк:
В строке есть числа 234 2222 2 43;
В строке есть числа 24 222256 21 243
В строке есть числа 4 22 2 4333
Подскажите, пожалуйста, как их можно вытащить из строчки?



0



Immo

692 / 509 / 238

Регистрация: 02.10.2012

Сообщений: 1,737

18.06.2019, 15:18

2

C#
1
2
            string str = "В строке есть числа 24 222256 21 243";
            Console.WriteLine(str.Where(x => Char.IsDigit(x)).ToArray());



0



Rbhbkk-00

4 / 3 / 1

Регистрация: 11.04.2016

Сообщений: 13

18.06.2019, 15:19

3

C#
1
2
string str = "24 222256 21 243";
str.Split(' ');



0



2 / 2 / 0

Регистрация: 05.12.2013

Сообщений: 316

18.06.2019, 15:23

 [ТС]

4

Immo, а как можно каждое отдельное число записать в отдельный label?



0



Immo

692 / 509 / 238

Регистрация: 02.10.2012

Сообщений: 1,737

18.06.2019, 15:36

5

C#
1
2
string[] strarr = "В строке есть числа 24 222256 21 243".Split(' ');
            string[] resultarr = strarr.Where(x => Regex.IsMatch(x, @"^d+$")).ToArray();

Добавлено через 2 минуты
ну как присвоить я думаю не составит труда

C#
1
label1.Text = resultarr[элемент];



2



2 / 2 / 0

Регистрация: 05.12.2013

Сообщений: 316

18.06.2019, 16:10

 [ТС]

6

Immo, Клёво, действительно работает, только я забыл указать, что в конце строки ставится rn и оно не видит последнее число. И также подскажите, пожалуйста, что означает @”^d+$?



0



Элд Хасп

Модератор

Эксперт .NET

13766 / 9982 / 2657

Регистрация: 21.04.2018

Сообщений: 29,728

Записей в блоге: 2

18.06.2019, 16:19

7

Цитата
Сообщение от MAKC13
Посмотреть сообщение

только я забыл указать, что в конце строки ставится rn и оно не видит последнее число

C#
1
2
3
char[] separtors = " rn"'".ToCharArray(); // Строка сепараторов
string[] strarr = "В строке есть числа 24 222256 21 243".Split(separtors);
string[] resultarr = strarr.Where(x => int.TryParse(x, out int _tmp))).ToArray();

Добавлено через 2 минуты

C#
4
int[] intarr = resultarr.Select(int.Parse).ToArray(); /// Числовой массив



1



2 / 2 / 0

Регистрация: 05.12.2013

Сообщений: 316

18.06.2019, 16:28

 [ТС]

8

Элд Хасп, подскажите, пожалуйста, а где взять out int _tmp?



0



Элд Хасп

Модератор

Эксперт .NET

13766 / 9982 / 2657

Регистрация: 21.04.2018

Сообщений: 29,728

Записей в блоге: 2

18.06.2019, 16:35

9

Цитата
Сообщение от MAKC13
Посмотреть сообщение

подскажите, пожалуйста, а где взять out int _tmp?

Нигде. Это временная переменная. Необходима для работы метода TryParse. Она создаётся и сразу уничтожается.

Добавлено через 2 минуты
Там скобка, по-моему лишняя.
Писал здесь – не заметил.

C#
3
string[] resultarr = strarr.Where(x => int.TryParse(x, out int _tmp)).ToArray();



0



2727 / 1644 / 869

Регистрация: 14.04.2015

Сообщений: 5,609

18.06.2019, 16:35

10

MAKC13, нигде, там же скобка только лишняя. в этом месте _tmp)))



0



Diamante

3457 / 2464 / 1170

Регистрация: 14.08.2016

Сообщений: 8,158

18.06.2019, 16:36

11

C#
1
2
var str = "В строке есть числа 24 222256 21 243";
var result = Regex.Matches(str,@"d+").Cast<Match>().Select(x=>int.Parse(x.ToString)).ToArray();

на выходе массив чисел



0



2 / 2 / 0

Регистрация: 05.12.2013

Сообщений: 316

18.06.2019, 16:40

 [ТС]

12

Элд Хасп, всё равно ругается на int _tmp, пишет будто бы нет такой переменной.



0



Diamante

3457 / 2464 / 1170

Регистрация: 14.08.2016

Сообщений: 8,158

18.06.2019, 16:54

13

Лучший ответ Сообщение было отмечено MAKC13 как решение

Решение

либо используй fw 4.5+, либо

C#
1
2
int _tmp;
string[] resultarr = strarr.Where(x => int.TryParse(x, out _tmp)).ToArray();



0



Модератор

Эксперт .NET

13766 / 9982 / 2657

Регистрация: 21.04.2018

Сообщений: 29,728

Записей в блоге: 2

18.06.2019, 17:14

14

Цитата
Сообщение от MAKC13
Посмотреть сообщение

ругается на int _tmp, пишет будто бы нет такой переменной.

out не пропустили спереди?

Добавлено через 1 минуту
Если FW старый, то сделайте как в посте #13 от Diamante.



1



Как найти все цифры в строке?

В этой небольшой заметке я хочу показать Вам, как можно легко найти цифры в строке. Данная задача очень часто встречается при парсинге текста, проверке полей ввода и некоторых других задачах. Поэтому было бы не плохо, если бы всегда под рукой было готовое решение.

И так, предположим, что нам дана строка, которая содержит следующий текст: T2$Z562k#Ca8*U50w1%Cc3. Поместим это значение в переменную string value.

Задача:

1. Найти все цифры в строке.
2. Вывести полученный результат в элемент управления listbox.

Пример 1.

В первом примере решим задачу с помощью метода Where, который осуществит фильтрацию последовательности значений с помощью простого лямбда выражения, после чего полученный результат мы преобразуем в список и поместим в элемент управления listBox.

listBox1.DataSource = value.Where(x => x > 47 & x  58).ToList();

Результат

найденные цифры

Если Вы не знаете, почему в данном примере используется диапазон чисел от 47 до 58, то советую прочитать статью: Как получить все буквы алфавита, в который Вы найдете подробное объяснение.

Пример 2.

Во втором примере, для того чтобы найти все цифры в строке, мы воспользуемся методом isDigit класса Char, который по переданному в него символу позволяет определить, цифра это или нет.

listBox1.DataSource = value.Where(x => Char.IsDigit(x)).ToList();

Выполняем код и получаем тот же самый результат.

Читайте также:

  • Как выгрузить данные из базы данных Mysql в XML?
  • Как получить сумму элементов массива в языке c#
  • Создание и добавление узлов в элементе TreeView


Здравствуйте , подскажите есть ли метод для С++, который бы считывал построчно цифры из текстового файла. Или подскажите как это реализовать. Буду благодарен

Пример
10
1 5 6 8
3 4
4 2 0 3 4 7 9

Причем надо в разные массивы запихнуть цифры из строк


  • Вопрос задан

    более трёх лет назад

  • 10960 просмотров

Почитайте вот здесь – stackoverflow.com/questions/9673708/tell-cin-to-st…
А именно следующий код:

std::string line;
std::getline(cin, line);
std::istringstream iss(line);
while (iss >> c) {    
    vec.push_back(c);
}

Объект istringstream инициализируется строкой, и позволяет работать с ней как с потоком.

P.S. Не забудьте подключить sstream

Я не очень хорошо понял вашего вопроса.
Если файл дан в таком виде:

0 1 2 3 4
5 6 7 8 9
….

То можно использовать потоковый ввод.

ifstream file("fileName");
int number;
...
file >> number;

Но, возможно, я вас неправильно понял.

Пригласить эксперта


  • Показать ещё
    Загружается…

19 мая 2023, в 14:17

20000 руб./за проект

19 мая 2023, в 14:02

100000 руб./за проект

11 мая 2023, в 16:20

1500 руб./в час

Минуточку внимания

Добавить комментарий