Я понимаю, что этому вопросу больше года, но я только столкнулся с той же проблемой и подумал, что добавлю свое решение для всех, кто сталкивается с этой проблемой.
Если у вас есть последовательность имен пользователей и паролей, которые просто дифференцируются по номерам в конце их значений, вы можете использовать переменную __threadNum для их входа в систему. Поэтому для значения имени пользователя вы можете сказать user $ {__ threadNum} .
Это решение проще, чем включение CSV, но работает только тогда, когда у вас есть список, такой как тот, который вы предложили в своем вопросе.
Если вы используете std :: string
, вызовите length ()
:
std::string str = "hello";
std::cout << str << ":" << str.length();
// Outputs "hello:5"
Если вы используете c-строку , вызовите strlen ()
.
const char *str = "hello";
std::cout << str << ":" << strlen(str);
// Outputs "hello:5"
Или, если вам нравится использовать строки в стиле Паскаля (или чертовы строки, как Джоэл Спольски любит называть их , когда они имеют завершающий NULL), просто разыменуйте первый символ.
const char *str = "\005hello";
std::cout << str + 1 << ":" << *str;
// Outputs "hello:5"
При работе со строками C ++ (std :: string) вы ищете length () или размер () . Оба должны предоставить вам одинаковую ценность. Однако при работе со строками в стиле C вы должны использовать strlen () .
#include <iostream>
#include <string.h>
int main(int argc, char **argv)
{
std::string str = "Hello!";
const char *otherstr = "Hello!"; // C-Style string
std::cout << str.size() << std::endl;
std::cout << str.length() << std::endl;
std::cout << strlen(otherstr) << std::endl; // C way for string length
std::cout << strlen(str.c_str()) << std::endl; // convert C++ string to C-string then call strlen
return 0;
}
Вывод:
6
6
6
6
Это зависит от того, о каком типе строки вы говорите. Есть много типов строк:
const char *
- многобайтовая строка в стиле C const wchar_t *
- широкая строка в стиле C std :: string
- «стандартная» многобайтовая строка std :: wstring
- «стандартная» широкая строка Для 3 и 4 вы можете использовать .size ()
или .length ()
методы.
Для 1 вы можете использовать strlen ()
, но вы должны убедиться, что строковая переменная не имеет значения NULL (=== 0)
Для 2 вы можно использовать wcslen ()
, но вы должны убедиться, что строковая переменная не имеет значения NULL (=== 0)
В нестандартных библиотеках C ++ есть и другие строковые типы, такие как MFC CString
, ATL CComBSTR
, ACE ' s ACE_CString
и т. д. с помощью таких методов, как .GetLength ()
и т. д. Я не могу сразу вспомнить их специфику.
Библиотеки STLSoft абстрагировали все это с помощью так называемых прокладок доступа к строкам , которые может использоваться для получения длины строки (и других аспектов) любого типа. Итак, для всего вышеперечисленного (включая нестандартные библиотечные) используется одна и та же функция stlsoft :: c_str_len ()
. В этой статье описывается, как все это работает, поскольку это не совсем очевидно или просто.
Библиотеки STLSoft абстрагировали все это с помощью так называемых прокладок доступа к строке , которые можно использовать для получения длины строки (и других аспектов) любого типа. Итак, для всего вышеперечисленного (включая нестандартные библиотечные) используется одна и та же функция stlsoft :: c_str_len ()
. В этой статье описывается, как все это работает, поскольку это не совсем очевидно или просто.
Библиотеки STLSoft абстрагировали все это с помощью так называемых прокладок доступа к строке , которые можно использовать для получения длины строки (и других аспектов) любого типа. Итак, для всего вышеперечисленного (включая нестандартные библиотечные) используется одна и та же функция stlsoft :: c_str_len ()
. В этой статье описывается, как все это работает, поскольку это не совсем очевидно или просто.
Если вы используете старую строку в стиле C вместо новых строк в стиле STL, в библиотеке времени выполнения C есть функция strlen
:
const char* p = "Hello";
size_t n = strlen(p);
если вы используете std :: string, для этого есть два общих метода:
std::string Str("Some String");
size_t Size = 0;
Size = Str.size();
Size = Str.length();
if you ' при использовании строки в стиле C (с использованием char * или const char *) вы можете использовать:
const char *pStr = "Some String";
size_t Size = strlen(pStr);
string foo;
... foo.length() ...
.length и .size являются синонимами, я просто думаю, что «длина» - более ясное слово.
для фактического строкового объекта:
yourstring.length();
или
yourstring.size();
std::string str("a string");
std::cout << str.size() << std::endl;