Получение ввода от другого источника; который заполняет строку длиной до 2048 символов.
Каков наиболее эффективный способ заполнения и сравнения этой строки? - Я хочу также легко добавить к строке.
Вот три моих попытки:
#include <cstdio>
#include <cstring>
int main(void) {
char foo[2048];
foo[0]='a', foo[1]='b', foo[2]='c', foo[3]='\0'; // E.g.: taken from u-input
puts(strcmp(foo, "bar")? "false": "true");
}
#include <iostream>
int main() {
std::string foo;
foo.reserve(2048);
foo += "abc"; // E.g.: taken from user-input
std::cout << std::boolalpha << (foo=="bar");
}
#include <iostream>
int main() {
std::string foo;
foo += "abc"; // E.g.: taken from user-input
std::cout << std::boolalpha << (foo=="bar");
}
Что наиболее эффективно, зависит от того, для чего вы оптимизируете.
Некоторые общие критерии:
Несомненный король для 1 и 2, в вашем примере, вероятно, также 3, является стилем C.
Для 4 и 5, стиль C++ 1.
Пункт 6, вероятно, с C++ -стилем.
Тем не менее, требуется правильное сочетание подчеркивания этой цели, которое imho поддерживает опцию C++ 0.
std::string
действительно имеет где-тоconst char*
.