我正在使用C++对几个大文件进行排序.我有一个文本文件,其中包含所有输入文件的名称,每行一个.我想一次读取一个文件名,将它们存储在一个数组中,然后用这些名称创建一个文件.现在,我正在使用fopen和fread,它需要字符数组(我试图优化速度),所以我的文件名被读入一个字符数组数组.但是,这些数组需要预先确定最大大小,因此如果文件名小于最大值,则其余数据充满了垃圾.然后,当我尝试在fopen()中使用该数组作为文件名时,它无法识别该文件,因为它在字符串的末尾有垃圾.我怎么解决这个问题?这是我的代码:
#include <iostream>
#include <fstream>
#include <string>
#include "stdafx.h"
#define NUM_INPUT_FILES 4
using namespace std;
FILE *fp;
unsigned char *buff;
FILE *inputFiles[NUM_INPUT_FILES];
int _tmain(int argc, _TCHAR* argv[])
{
buff = (unsigned char *) malloc(2048);
char j[8];
char outputstring[] = "Feelings are not supposed to be logical. Dangerous is the man who has rationalized his emotions. (David Borenstein)";
fp = fopen("hello.txt", "r");
string tempfname[NUM_INPUT_FILES];
//fp = fopen("hello.txt", "r");
for(int i=0;i<NUM_INPUT_FILES;i++)
{
fgets(tempfname[i], 20, fp);
cout << tempfname[i];
}
fclose(fp);
for(int i=0; …Run Code Online (Sandbox Code Playgroud) 我有这种情况.
declare array of char*;
switch(id)
{
case 1:
add 4 words in array
case 2:
add 2 words in array
default:
add 1 word in array
}
use array here;
Run Code Online (Sandbox Code Playgroud)
是否有可能在C++中做这样的事情.我试过这样做,但它不适合我.
我正在逐字节地读取数据.当我确定我有一个完整的消息时,我需要将它作为字符串传递给另一个函数.有些消息可能非常大,但大小经常变化.您觉得哪种实现最有效:
public test class
{
char[] buffer = new char[MAX_SIZE_7200];
int bufferIndex = 0;
void parseData(ArrayList<Byte> msg, length)
{
while (!msg.isEmpty())
{
buffer[bufferIndex++] = (char) msg.remove(0);
if (isfullmessage)
{
parseData(new String(buffer, 0, bufferIndex);
bufferIndex = 0; //restart and continue parsing data
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
public test class
{
List<Character> buffer = new ArrayList<Character>();
int bufferIndex = 0;
void parseData(ArrayList<Byte> msg, length)
{
while (!msg.isEmpty())
{
buffer.add((char) msg.remove(0));
if (isfullmessage)
{
StringBuilder builder = new StringBuilder(buffer.size());
for (Character ch: …Run Code Online (Sandbox Code Playgroud) 我有一个字符串"sss"和一个字符数组{'s','s','s'}.我将数组转换为字符串,但比较它们时不会打印"两者相等"的消息.为什么?
public class RoughActivity extends Activity
{
private Button checkButton;
private TextView text;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start();
}
private void start() {
int i;
checkButton=(Button)findViewById(R.id.go);
text=(TextView)findViewById(R.id.display);
final String question="sss";
final char answer[]=new char[question.length()];
for(i=0;i<question.length();i++)
{
answer[i]='s';
}
checkButton.setOnClickListener(new View.OnClickListener(){ //on clicking the button,the text must be filled with "both are equal"
public void onClick(View v){
if(question.equals(answer))
{
text.setText("both are equal");
}
}});
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个"包含"文本的字节数组 - 此时编码/字符集是未知的.
如何在不从字节数组创建String对象的情况下删除空格,\n,\ r \n字符?
目标是将字节数组显示为文本,并使用用户指定的字符集,只是没有这些空格,\n,\ r \n字符.