Как назначить char * (с каждым возможным значением) для строки C ++ - PullRequest
2 голосов
/ 27 июня 2011

Я на С ++.И я пытаюсь добавить массив символов в строку C ++.Единственное, что этот массив может иметь все возможные значения, отрицательные, положительные и 0. Поэтому, когда я присваиваю этот массив строке, он останавливается в какой-то момент, потому что он нашел значение 0.
1) Может ли строка добавить этиценности?Или они должны быть строго от 1 до 127?Если true,
2) Есть ли способ сохранить строковое назначение, даже если он находит 0?

Ответы [ 3 ]

6 голосов
/ 27 июня 2011

Перегрузка string::append( const char* s, size_t n ) для append() должна делать то, что вы хотите. Предполагая, что cpp_string является вашей std::string переменной или ссылкой, а c_string_ptr является вашим указателем на массив символов:

cpp_string.append( c_string_ptr, number_of_bytes);

Обратите внимание, однако, что std::string является typedef для std::basic_string<char>. Поскольку char может не быть подписано на вашей платформе, вы можете не получить желаемого поведения для сравнения. Вы должны убедиться, что char подписано на вашей платформе, или вы можете использовать свой собственный typedef для предотвращения проблем, если платформа (или сборка) изменится в будущем:

typedef std::basic_string<signed char> sstring;  // or whatever name you like
2 голосов
/ 27 июня 2011

Использование string :: append () function.

Пример кода:

#include <iostream>
#include <string>
using namespace std;

int main ()
{
  string str2="My String";

  str.append("is nice",7);

  cout << str << endl;
  return 0;
}

Есть ли способсохранить строковое присваивание, даже если он обнаружит, что символьные массивы 0?
заканчиваются нулем, и используют 0 для определения конца массива.
std :: string не использует 0 для определения концастрока.

1 голос
/ 27 июня 2011

Вы можете использовать следующие функции:

string & append (const char * s, size_t n);

string & append (const char * s);

Первый будет добавляться с символом *, пока не достигнет размера, второй будет добавляться, пока не найдет \0 внутри строки.

Таким образом, вы можете использовать первое с любым значением символов, но вы должны позаботиться о втором, так как (char) 0 прекратит добавление.

См .: http://www.cplusplus.com/reference/string/string/append/

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