Мне нужно прочитать первую букву каждого слова в строковом массиве C ++ - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно прочитать первую букву каждого слова в массиве строк в C ++. Я пытаюсь перевести сообщение на латынь, и мне нужно уметь определить, какие первые (и вторые) буквы. Мне удалось заполнить строковый массив текстом из (txt) файла, но я действительно застрял в том, что делать дальше. Пожалуйста помоги. Спасибо!

string *message = NULL;//}
string tempChar, value;//This is dynamically allocating space in the string array
int size = 0;          //}

while (Input>>tempChar) {//Getting the size of the array
    size++;
}

message = new string[size];
Input.close();//This part is to make sure the file is not read two times
Input.open("example.txt");
cout << "The original message is :\n";

for (int i = 0; i < size; i++) {//This part fills and outputs the original message
    Input >> message[i];
    cout << message[i] << " ";
}

cout << "\n" << endl;
Input.close();

1 Ответ

0 голосов
/ 15 октября 2019
#include <string>
#include <iostream>
#include <iterator>

int main()
{
    std::string string_array[4] = {"Blue", "Red", "Orange", "Yellow"}; 
    for (int i = 0; i < std::size(string_array); ++i)
        std::cout << string_array[i].substr(0,2) << std::endl;
    return 0;
}

Требуется C ++ 17 для использования std::size(), но можно использовать sizeof(string_array)/sizeof(string_array[0]) с некоторыми мерами предосторожности , как описано здесь . Или добавьте реализацию std::size() в свой код:

#include <cstdlib>

template<class T, std::size_t n>
constexpr std::size_t size(const T (&)[n])
{
    return n;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...