使用示例将给定的二进制数组转换为 C++ 中的字符串
给定一个包含N个整数元素的二进制数组arr[] ,任务是创建一个字符串s ,其中包含与数组arr[]中相同索引处的所有N个元素。
例子:
Input: arr[] = {0, 1, 0, 1}
Output: string = “0101“
Input: arr[] = { 1, 1, 0, 0, 1, 1}
Output: string = “110011”
在 C++ 中将二进制数组转换为字符串的不同方法是:
- 使用 to_string()函数。
- 使用字符串流。
- 将 char '0' 添加到每个整数。
- 使用类型转换。
- 使用 push_back函数。
- 使用变换()函数。
让我们开始详细讨论这些功能。
使用 to_string()函数
to_string()函数接受单个整数并将整数值转换为字符串。
句法:
string to_string (int val);
Parameters:
val – Numerical value.
Return Value:
A string object containing the representation of val as a sequence of characters.
下面是实现上述方法的 C++ 程序:
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
// Creating an empty string
string s = "";
for(int i = 0; i < size; i++)
{
s += to_string(arr[i]);
}
cout << s;
return 0;
}
C++
// C++ program to implement
// the above approach
#include
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
// Creating an empty string
string s = "";
for(int i = 0; i < size; i++)
{
// Creating an empty stringstream
stringstream temp;
// Inserting data into the stream
temp << arr[i];
// Extracting data from stream using
// .str() function
s += temp.str();
}
// Printing the string
cout << s;
}
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 1, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
string s = "";
// Creating an empty string
for(int i = 0; i < size; i++)
{
// arr[i] + 48
// adding ASCII of value of 0
// i.e., 48
s += arr[i] + '0';
}
// Printing the string
cout << s;
}
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 1, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
// Creating an empty string
string s = "";
for(int i = 0; i < size; i++)
{
arr[i] += 48;
s += (char) arr[i];
}
// Printing the string
cout << s;
}
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
vector s;
for(int i = 0; i < size; i++)
{
s.push_back(arr[i] + '0');
}
for(auto it : s)
{
cout << it;
}
}
C++
// C++ program to implement
// the above method
#include
#include
using namespace std;
// define int to char function
char intToChar(int i)
{
// logic behind adding 48 to integer
// is discussed in Method "using type
// casting".
return i + 48;
}
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
char str[size + 1];
transform(arr, arr + 5, str, intToChar);
// Printing the string
cout << str;
}
输出:
10101
使用字符串流
stringstream 类在解析输入时非常有用。 stringstream 将字符串对象与流相关联,允许您从字符串中读取,就好像它是一个流(如 cin)。要使用 stringstream 类,代码中需要包含sstream 头文件。
基本方法有:
clear(): to clear the stream
str(): to get and set string object whose content is present in stream.
operator << add a string to the stringstream object.
operator >> read something from the stringstream object,
stringstream 类可用于通过以下方式将整数值转换为字符串值:
- 使用'<<' 运算符将数据插入流中。
- 使用“>>”运算符或使用 str()函数从流中提取数据。
- 将提取的数据与字符串's'连接起来。
下面是实现上述方法的 C++ 程序:
C++
// C++ program to implement
// the above approach
#include
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
// Creating an empty string
string s = "";
for(int i = 0; i < size; i++)
{
// Creating an empty stringstream
stringstream temp;
// Inserting data into the stream
temp << arr[i];
// Extracting data from stream using
// .str() function
s += temp.str();
}
// Printing the string
cout << s;
}
输出:
10101
将 char '0' 添加到每个 Integer
将 char '0' 添加到每个整数的方法非常简单。
- 第一步是声明一个空字符串s。
- 遍历数组的每个元素,并通过将字符“0”的 ASCII 值与字符串s 相加来连接每个整数。
逻辑:
将 char '0' 的 ASCII 值与整数 0 和 1 相加的结果由编译器计算如下:
Decimal value of char ‘0’ is 48.
string += 0 + ‘0’
// += 0 + 48
// += 48
Char value of decimal 48 is ‘0’.
string += 1 + ‘0’
// += 1 + 48
// += 49
Char value of decimal 49 is ‘1’.
下面是实现上述方法的 C++ 程序:
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 1, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
string s = "";
// Creating an empty string
for(int i = 0; i < size; i++)
{
// arr[i] + 48
// adding ASCII of value of 0
// i.e., 48
s += arr[i] + '0';
}
// Printing the string
cout << s;
}
输出:
11101
使用类型转换
在类型转换和连接之前,需要将 48 添加到整数,否则会导致输出中出现一些奇怪的符号。发生这种情况是因为在 ASCII 表中,从 0 到 9 的数字具有从 48 到 57 的 char 值。在二进制数组的情况下,整数将为 0 或 1。
- 如果为 0,则添加后将为 48,然后在类型转换后char '0'与字符串连接。
- 如果它是 1,添加后它将是 49,然后类型转换char '1'与字符串连接。
下面是实现上述方法的 C++ 程序:
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 1, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
// Creating an empty string
string s = "";
for(int i = 0; i < size; i++)
{
arr[i] += 48;
s += (char) arr[i];
}
// Printing the string
cout << s;
}
输出:
11101
使用 push_back()函数
push_back()成员函数用于追加字符。将字符c 附加到字符串的末尾,将其长度增加一。
句法:
void string:: push_back (char c)
Parameters:
Character which to be appended.
Return value:
None
Error:
throws length_error if the resulting size exceeds the maximum number of characters(max_size).
笔记:
添加char '0'背后的逻辑已在方法“将 '0' 添加到整数”中进行了讨论。
下面是实现上述方法的 C++ 程序:
C++
// C++ program to implement
// the above approach
#include
#include
using namespace std;
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
vector s;
for(int i = 0; i < size; i++)
{
s.push_back(arr[i] + '0');
}
for(auto it : s)
{
cout << it;
}
}
输出:
10101
使用变换()函数
transform()函数按顺序将操作应用于数组的元素,并将结果存储在另一个输出数组中。要使用 transform()函数,请包含算法头文件。
下面是实现上述方法的C++程序:
C++
// C++ program to implement
// the above method
#include
#include
using namespace std;
// define int to char function
char intToChar(int i)
{
// logic behind adding 48 to integer
// is discussed in Method "using type
// casting".
return i + 48;
}
// Driver code
int main()
{
int arr[5] = {1, 0, 1, 0, 1};
int size = sizeof(arr) / sizeof(arr[0]);
char str[size + 1];
transform(arr, arr + 5, str, intToChar);
// Printing the string
cout << str;
}
输出:
10101