Подстрока новая строка - PullRequest
0 голосов
/ 28 января 2012

Я использую функцию substr(), но она не работает.Мой код ниже

std::string s1 = ".V/123\n"
          ".V/233\n";

std::string ss;
if(s1.substr(0,3) == ".V/")
{
    ss = s1.substr(3);

    std::cout << ss;
}  else {
    std::cout << "INCORRECT" << std::endl;
}

Вывод 123.V/123

Не должно ли это быть:

123
123

Может кто-нибудь сказать мне, где я иду не так, пожалуйста

Ответы [ 4 ]

1 голос
/ 28 января 2012

Ваша строка содержит 2 строки. Выполнение «.V / 123 \ n» «.V / 223 \ n» будет аналогично «.V / 123 \ n.V / 223 \ n». Либо разделите это на отдельные переменные или массив. То, что делает ваш substr (3), - это извлечение всех символов в строке от 4-го символа до конца, поэтому для ss устанавливается значение «123 \ n.V / 223 \ n». Это то, что вы видите.

То, что вы хотите, это что-то вроде

  std::string s1[2] = { ".V/123\n", ".V/233\n"};

  std::string ss;
  for (int i = 0; i < 2; ++i) {
    if (s1[i].substr(0,3) == ".V/") {
      ss = s1[i].substr(3);

      std::cout << ss;
    }  else {
      std::cout << "INCORRECT" << std::endl;
    }
  }
1 голос
/ 28 января 2012

Первая странная вещь, которую я вижу, это инициализация s1

std::string s1 = ".V/123\n"
      ".V/233\n";

если вы хотите, чтобы оно было ".V/123\n", вы должны объявить его как:

std::string s1 = ".V/123\n";

Вторая странная вещь - это второй вызов substr, который определяет только позицию, поэтому вы попадете из позиции в конец строки, чтобы она работала так, как объявлено. Я добавил ссылку для вас ниже.

ссылка: http://www.cplusplus.com/reference/string/string/substr/

1 голос
/ 28 января 2012

Вывод из вашего кода должен быть:

123
.V/233
<empty line>

и это именно то, что он печатает на моей машине. Прежде всего, обратите внимание, что вторые 3 цифры - это 233 (я полагаю, это опечатка), а не 123. Все, что делает substr (3): удаляет первые 3 символа из вашей строки. Нет причин для удаления .V /.

0 голосов
/ 28 января 2012
ss = s1.substr(3).substr(0,3);

это должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...